Load balancing is a method used in computer networks to distribute workload evenly across two or more computers, network links, central processing units (CPUs), hard drives, etc. Load balancing attempts to avoid overloading a particular resource and may also provide better resource utilization, resource throughput, and minimize response times. The load balancing service may be provided by a software program or hardware device such as a multilayer switch or a Domain Name System (DNS) server. Load balancing is commonly used to mediate internal communications in computer clusters (high-availability clusters) or across servers in a server farm.
In a typical server farm environment, each server will report its loading to the load balancer. The load balancer will consider each server's load and other parameters when assigning new traffic to a server. For example, when the load on a server increases to a predetermined threshold, then a second server will be assigned a portion of the load while the original server is still processing requests. Thus, entities that have different network traffic profiles can reduce costs by sharing server access or migrating World Wide Web (WWW) services to server farms at different geographical locations to take advantage of local network traffic patterns or to reduce peak power consumption utility rates.